home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4810 / 4810.xpi / chrome / speeddial.jar / content / editDial.js < prev    next >
Text File  |  2010-01-31  |  24KB  |  510 lines

  1. var targetDial = -1;
  2. var gPref = Components.classes["@mozilla.org/preferences-service;1"]
  3.                .getService(Components.interfaces.nsIPrefService)
  4.                .QueryInterface(Components.interfaces.nsIPrefBranch2);
  5.  
  6. var addDialBundle;
  7. var currentUnitValue = 1;
  8. var cropSelected = false;
  9. var isFirefox3 = false;
  10.  
  11. function Startup() {
  12.   // Set variables
  13.   targetDial = window.arguments[0];
  14.   addDialBundle = document.getElementById("bundle_editDial");
  15.   var defaultRefreshInterval = gPref.getIntPref("extensions.speeddial.defaultRefreshInterval");
  16.   var refreshIntervalValue = defaultRefreshInterval;
  17.   var defaultDialJavascript = gPref.getBoolPref("extensions.speeddial.defaultDialJavascript");
  18.  
  19.   // Set actions button
  20.   if(document.documentElement.getButton && document.documentElement.getButton('extra2')) {
  21.     var extra2 = document.documentElement.getButton('extra2');
  22.     extra2.setAttribute('type', 'menu');
  23.     extra2.setAttribute('popup', 'editdial-actions-popup');
  24.   }
  25.   
  26.   // Detect version
  27.   var appInfo = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo)
  28.   // only if this is Firefox
  29.   var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
  30.                       .getService(Components.interfaces.nsIVersionComparator);
  31.   // only if the platform version is 1.9 or greater
  32.   if (versionChecker.compare(appInfo.platformVersion, "1.9a1") >= 0) {
  33.     isFirefox3 = true;
  34.   }
  35.   
  36.   
  37.   if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-url")) {
  38.     // We've an URL, edit
  39.     document.getElementById("url").value = gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-url");
  40.     document.getElementById("title").value = gPref.getComplexValue("extensions.speeddial.thumbnail-" + targetDial + "-label", Components.interfaces.nsISupportsString).data;
  41.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-dynamictitle")) {
  42.       document.getElementById("dynamicTitle").checked = gPref.getBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-dynamictitle");
  43.     }
  44.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-refreshinterval")) {
  45.       document.getElementById("refreshType").selectedIndex = 1;
  46.       refreshIntervalValue = gPref.getIntPref("extensions.speeddial.thumbnail-" + targetDial + "-refreshinterval");
  47.     }
  48.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-backgroundcolor")) {
  49.       document.getElementById("backgroundColor").color = gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-backgroundcolor");
  50.     } else {
  51.       document.getElementById("backgroundColor").color = "#FFFFFF";
  52.     }
  53.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-layout")) {
  54.       document.getElementById("layoutScaling").selectedIndex = gPref.getIntPref("extensions.speeddial.thumbnail-" + targetDial + "-layout");
  55.     }
  56.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-cropping")) {
  57.       document.getElementById("enableThumbnailCrop").checked = true;
  58.       var croppingValues = gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-cropping").split(",");
  59.       document.getElementById("leftOffset").value = croppingValues[0];
  60.       document.getElementById("topOffset").value = croppingValues[1];
  61.       document.getElementById("cropWidth").value = croppingValues[2];
  62.       document.getElementById("cropHeight").value = croppingValues[3];
  63.       if (croppingValues[4]) {
  64.         document.getElementById("cropScaling").value = croppingValues[4];
  65.       } else {
  66.         document.getElementById("cropScaling").value = 100;
  67.       }
  68.       cropSelected  = true;
  69.     }
  70.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl")) {
  71.       document.getElementById("customThumbnailURL").checked = true;
  72.       document.getElementById("thumbnailURL").value = gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl");
  73.     }
  74.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-js")) {
  75.       document.getElementById("enableJavaScript").checked = gPref.getBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-js");
  76.     } else {
  77.       document.getElementById("enableJavaScript").checked = defaultDialJavascript;
  78.     }
  79.   } else {
  80.     // We don't have an URL, new dial
  81.     // Set title
  82.     document.title = addDialBundle.getString("addDialTitle");
  83.     // Set default thumbnail refresh
  84.     if (defaultRefreshInterval > 0) {
  85.       document.getElementById("refreshType").selectedIndex = 1;
  86.     }
  87.         var clearButton = document.getElementById('editdial-clear');
  88.     clearButton.setAttribute('hidden', 'true');
  89.         var clearSeparator = document.getElementById('clear-separator');
  90.     clearSeparator.setAttribute('hidden', 'true');
  91.     document.getElementById("backgroundColor").color = "#FFFFFF";
  92.     document.getElementById("enableJavaScript").checked = defaultDialJavascript;
  93.   }
  94.   if (refreshIntervalValue == 0) {
  95.     refreshIntervalValue = 3600*24;
  96.   }
  97.   
  98.   document.getElementById("backgroundColorText").value = document.getElementById("backgroundColor").color;
  99.  
  100.   
  101.   // Set the correct refresh interval unit value
  102.   var refreshInterval = document.getElementById("refreshInterval");
  103.   var unitIndex = SpeedDialUtils.getTimeUnitIndex(refreshIntervalValue);
  104.   currentUnitValue = SpeedDialUtils.timeUnits[unitIndex];
  105.   
  106.   document.getElementById("refreshIntervalUnit").selectedIndex = unitIndex;
  107.   refreshInterval.value = refreshIntervalValue / currentUnitValue;
  108.  
  109.   dynamicTitleChanged();
  110.   refreshTypeChanged();
  111.   enableThumbnailCropChanged();
  112.   customThumbnailURLChanged();
  113.   
  114.   sizeToContent();
  115. }
  116.  
  117. function fixURL(targetURL) {
  118.   var lowercaseURL = targetURL.toLowerCase();
  119.   if ((lowercaseURL.indexOf("moz-icon:") != 0)
  120.       && (lowercaseURL.indexOf("bbs2chreader:") != 0)
  121.       && (!lowercaseURL.match(/^[a-z]+:/))
  122.       ) {
  123.     targetURL = "http://" + targetURL;
  124.   }
  125.   
  126.   return targetURL;
  127. }
  128.  
  129. function onOK(event) {
  130.   var trimmedURL = document.getElementById("url").value.replace(/^\s+|\s+$/g, '') ;
  131.   if (trimmedURL.length == 0) {
  132.     alert(addDialBundle.getString("noURLAlert"));
  133.     // Select main tab and URL textbox
  134.     document.getElementById("editDialTabBox").selectedIndex = 0;
  135.     document.getElementById("url").focus();
  136.     return false;
  137.   }
  138.  
  139.   // Check if it has protocol
  140.   trimmedURL = fixURL(trimmedURL);
  141.  
  142.   if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-url")) {
  143.     var isRefreshing = false;
  144.  
  145.     // Thumbnail URL
  146.     var oldURL = gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-url");
  147.     if (oldURL != trimmedURL) {
  148.       gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-url", trimmedURL);
  149.       isRefreshing = true;
  150. //      if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-lastsaved")) {
  151. //        gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-lastsaved");
  152. //      }
  153.       // Reset extra parameters if present
  154.       if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-extra")) {
  155.         gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-extra");
  156.       }
  157.     }
  158.  
  159.     // Thumbnail title
  160.     var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  161.     str.data = document.getElementById("title").value;
  162.     gPref.setComplexValue("extensions.speeddial.thumbnail-" + targetDial + "-label", Components.interfaces.nsISupportsString, str);
  163.  
  164.     // Dynamic title
  165.     var oldDynamicTitle = false;
  166.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-dynamictitle")) {
  167.       oldDynamicTitle = gPref.getBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-dynamictitle");
  168.     }
  169.     var newDynamicTitle = document.getElementById("dynamicTitle").checked;
  170.     if (oldDynamicTitle != newDynamicTitle) {
  171.       gPref.setBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-dynamictitle", newDynamicTitle);
  172.       if (newDynamicTitle) {
  173.         isRefreshing = true;
  174.       }
  175.     }
  176.     
  177.     // Background color
  178.     var backgroundColor = document.getElementById("backgroundColorText").value;
  179.     if (backgroundColor != "#FFFFFF") {
  180.       gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-backgroundcolor", backgroundColor);
  181.     } else if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-backgroundcolor")) {
  182.       gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-backgroundcolor");
  183.     }
  184.     
  185.     // Layout
  186.     var layoutScalingIndex = document.getElementById("layoutScaling").selectedIndex;
  187.     if (layoutScalingIndex != 0) {
  188.       gPref.setIntPref("extensions.speeddial.thumbnail-" + targetDial + "-layout", layoutScalingIndex);
  189.     } else if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-layout")) {
  190.       gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-layout");
  191.     }
  192.     
  193.     // Cropping
  194.     if (document.getElementById("enableThumbnailCrop").checked) {
  195.       var croppingValue = "" + document.getElementById("leftOffset").value + "," + 
  196.                                document.getElementById("topOffset").value + "," +
  197.                                document.getElementById("cropWidth").value + "," +
  198.                                document.getElementById("cropHeight").value + "," +
  199.                                document.getElementById("cropScaling").value;
  200.       if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-cropping")) {
  201.         if (gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-cropping") != croppingValue) {
  202.           isRefreshing = true;
  203.           gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-cropping", croppingValue);
  204.         }
  205.       } else {
  206.         isRefreshing = true;
  207.         gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-cropping", croppingValue);
  208.       }
  209.     } else if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-cropping")) {
  210.       isRefreshing = true;
  211.       gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-cropping");
  212.     }
  213.  
  214.     // Thumbnail URL
  215.     if (document.getElementById("customThumbnailURL").checked) {
  216.       var thumbnailURL = document.getElementById("thumbnailURL").value.replace(/^\s+|\s+$/g, '');
  217.  
  218.       if (thumbnailURL != "") {
  219.         thumbnailURL = fixURL(thumbnailURL);
  220.         if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl")) {
  221.           if (gPref.getCharPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl") != thumbnailURL) {
  222.             isRefreshing = true;
  223.             gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl", thumbnailURL);
  224.             // Reset extra parameters if present
  225.             if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-extra")) {
  226.               gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-extra");
  227.             }
  228.           }
  229.         } else {
  230.           isRefreshing = true;
  231.           gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl", thumbnailURL);
  232.           // Reset extra parameters if present
  233.           if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-extra")) {
  234.             gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-extra");
  235.           }
  236.         }
  237.       } else if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl")) {
  238.         isRefreshing = true;
  239.         gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl");
  240.         // Reset extra parameters if present
  241.         if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-extra")) {
  242.           gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-extra");
  243.         }
  244.       }
  245.     } else if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl")) {
  246.       isRefreshing = true;
  247.       gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl");
  248.       // Reset extra parameters if present
  249.       if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-extra")) {
  250.         gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-extra");
  251.       }
  252.     }
  253.     
  254.     var enableJs = document.getElementById("enableJavaScript").checked;
  255.     if (!gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-js") ||
  256.         (gPref.getBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-js") != enableJs )) {
  257.       isRefreshing = true;
  258.       gPref.setBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-js", enableJs);
  259.     }
  260.     
  261.     // TODO: fix this in Fennec
  262.     if (isRefreshing) {
  263.       if (SpeedDialUtils.isFennec()) {
  264.         gPref.setBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-manualrefresh", true);
  265.       } else {
  266.         var promptService = Components.classes['@mozilla.org/embedcomp/prompt-service;1'].getService(Components.interfaces.nsIPromptService);
  267.         if (promptService.confirmEx(
  268.             window,
  269.             addDialBundle.getString("refreshThumbnail.confirmtitle"),
  270.             addDialBundle.getString("refreshThumbnail.confirmtext"),
  271.             (promptService.BUTTON_TITLE_YES * promptService.BUTTON_POS_0) +
  272.             (promptService.BUTTON_TITLE_NO  * promptService.BUTTON_POS_1),
  273.             null, null, null, null, {}
  274.             ) == 0) {
  275.           gPref.setBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-manualrefresh", true);
  276.         }
  277.       }
  278.     }
  279.   } else {
  280.     // Just add the information...
  281.     gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-url", trimmedURL);
  282.  
  283.     var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  284.     str.data = document.getElementById("title").value;
  285.     gPref.setComplexValue("extensions.speeddial.thumbnail-" + targetDial + "-label", Components.interfaces.nsISupportsString, str);
  286.  
  287.     if (!isFirefox3) {
  288.       gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-icon", "data:");
  289.     }
  290.     gPref.setBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-dynamictitle", document.getElementById("dynamicTitle").checked);
  291.     
  292.     // Background color
  293.     var backgroundColor = document.getElementById("backgroundColorText").value;
  294.     if (backgroundColor != "#FFFFFF") {
  295.       gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-backgroundcolor", backgroundColor);
  296.     }
  297.     
  298.     // Layout
  299.     var layoutScalingIndex = document.getElementById("layoutScaling").selectedIndex;
  300.     if (layoutScalingIndex != 0) {
  301.       gPref.setIntPref("extensions.speeddial.thumbnail-" + targetDial + "-layout", layoutScalingIndex);
  302.     }
  303.  
  304.     // Cropping
  305.     if (document.getElementById("enableThumbnailCrop").checked) {
  306.       var croppingValue = "" + document.getElementById("leftOffset").value + "," + 
  307.                                document.getElementById("topOffset").value + "," +
  308.                                document.getElementById("cropWidth").value + "," +
  309.                                document.getElementById("cropHeight").value + "," +
  310.                                document.getElementById("cropScaling").value;
  311.       gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-cropping", croppingValue);
  312.     }
  313.     
  314.     // Thumbnail URL
  315.     if (document.getElementById("customThumbnailURL").checked) {
  316.       var thumbnailURL = document.getElementById("thumbnailURL").value;
  317.       
  318.       if (thumbnailURL != "") {
  319.         gPref.setCharPref("extensions.speeddial.thumbnail-" + targetDial + "-thumbnailurl", thumbnailURL);
  320.       }
  321.     }
  322.  
  323.     gPref.setBoolPref("extensions.speeddial.thumbnail-" + targetDial + "-js", document.getElementById("enableJavaScript").checked);
  324.   }
  325.  
  326.   // modify time intervals
  327.   if (document.getElementById("refreshType").selectedIndex == 1) {
  328.     var newRefreshInterval = document.getElementById("refreshInterval").value * currentUnitValue;
  329.     if (newRefreshInterval < 5) newRefreshInterval = 5;
  330.     gPref.setIntPref("extensions.speeddial.thumbnail-" + targetDial + "-refreshinterval", document.getElementById("refreshInterval").value * currentUnitValue);
  331.   } else {
  332.     if (gPref.prefHasUserValue("extensions.speeddial.thumbnail-" + targetDial + "-refreshinterval")) {
  333.       gPref.clearUserPref("extensions.speeddial.thumbnail-" + targetDial + "-refreshinterval");
  334.     }
  335.   }
  336.   
  337.   SpeedDialUtils.automaticBackup();
  338.   return true;
  339. }
  340.  
  341. function onCancel(event) {
  342.   return true;
  343. }
  344.  
  345. function onClearAction(event) {
  346.   var confirmClearMessage = addDialBundle.getString("confirmClear");
  347.   // TODO: fix this in Fennec
  348.   if (SpeedDialUtils.isFennec() || confirm(confirmClearMessage)) {
  349.     // Clear thumbnail
  350.     SpeedDialUtils.deassignThumbnail(targetDial);
  351.     close();
  352.   }
  353.   return true;
  354. }
  355.  
  356. function dynamicTitleChanged() {
  357.   document.getElementById("title").disabled = document.getElementById("dynamicTitle").checked;
  358. }
  359.  
  360. function refreshTypeChanged() {
  361.   document.getElementById("refreshIntervalBox").hidden = !(document.getElementById("refreshType").selectedIndex == 1);
  362. }
  363.  
  364. function refreshIntervalUnitChanged() {
  365.   var newValue = SpeedDialUtils.timeUnits[document.getElementById("refreshIntervalUnit").selectedIndex];
  366.   if (newValue != currentUnitValue) {
  367.     // Update ammount
  368. //    var refreshInterval = document.getElementById("refreshInterval");
  369. //    refreshInterval.value = Math.floor(refreshInterval.value * currentUnitValue / newValue);
  370.     currentUnitValue = newValue;
  371.   }
  372. }
  373.  
  374. function backgroundColorChanged() {
  375.   var backgroundColorText = document.getElementById("backgroundColorText");
  376.   var backgroundColor = document.getElementById("backgroundColor");
  377.   
  378.   if (backgroundColorText.value != backgroundColor.color) {
  379.     backgroundColorText.value = backgroundColor.color;
  380.   }
  381. }
  382.  
  383. function backgroundColorTextChanged() {
  384.   var backgroundColorText = document.getElementById("backgroundColorText");
  385.   var backgroundColor = document.getElementById("backgroundColor");
  386.   
  387.   if (backgroundColorText.value != backgroundColor.color) {
  388.     backgroundColor.color = backgroundColorText.value;
  389.   }
  390. }
  391.  
  392. function showFileBrowser() {
  393.   var nsIFilePicker = Components.interfaces.nsIFilePicker;
  394.   var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  395.   fp.init(window, addDialBundle.getString("selectFile"), nsIFilePicker.modeOpen);
  396.   fp.appendFilters(nsIFilePicker.filterImages);
  397.   fp.appendFilters(nsIFilePicker.filterHTML); 
  398.   fp.appendFilters(nsIFilePicker.filterAll);
  399.   var res = fp.show();
  400.   if (res == nsIFilePicker.returnOK){
  401.     document.getElementById("thumbnailURL").value = fp.fileURL.spec;
  402.   }
  403. }
  404.  
  405. function enableThumbnailCropChanged() {
  406.   var enableThumbnailCropCheckbox = document.getElementById("enableThumbnailCrop");
  407.   document.getElementById("leftOffsetLabel").disabled = !enableThumbnailCropCheckbox.checked;
  408.   document.getElementById("leftOffset").disabled = !enableThumbnailCropCheckbox.checked;
  409.   document.getElementById("leftOffsetPixels").disabled = !enableThumbnailCropCheckbox.checked;
  410.   document.getElementById("topOffsetLabel").disabled = !enableThumbnailCropCheckbox.checked;
  411.   document.getElementById("topOffset").disabled = !enableThumbnailCropCheckbox.checked;
  412.   document.getElementById("topOffsetPixels").disabled = !enableThumbnailCropCheckbox.checked;
  413.   document.getElementById("cropWidthLabel").disabled = !enableThumbnailCropCheckbox.checked;
  414.   document.getElementById("cropWidth").disabled = !enableThumbnailCropCheckbox.checked;
  415.   document.getElementById("cropWidthPixels").disabled = !enableThumbnailCropCheckbox.checked;
  416.   document.getElementById("cropHeightLabel").disabled = !enableThumbnailCropCheckbox.checked;
  417.   document.getElementById("cropHeight").disabled = !enableThumbnailCropCheckbox.checked;
  418.   document.getElementById("cropHeightPixels").disabled = !enableThumbnailCropCheckbox.checked;
  419.   document.getElementById("cropScalingLabel").disabled = !enableThumbnailCropCheckbox.checked;
  420.   document.getElementById("cropScaling").disabled = !enableThumbnailCropCheckbox.checked;
  421.   document.getElementById("cropScalingPercent").disabled = !enableThumbnailCropCheckbox.checked;
  422.   document.getElementById("cropSelectorButton").disabled = !enableThumbnailCropCheckbox.checked;
  423. }
  424.  
  425. function customThumbnailURLChanged() {
  426.   var customThumbnailURLCheckbox = document.getElementById("customThumbnailURL");
  427.   document.getElementById("thumbnailURL").disabled = !customThumbnailURLCheckbox.checked;
  428.   document.getElementById("chooseFileButton").disabled = !customThumbnailURLCheckbox.checked;
  429. }
  430.  
  431. function cropSelectorButtonPressed() {
  432.   var targetURL;
  433.  
  434.   if (document.getElementById("customThumbnailURL").checked) {
  435.     targetURL = document.getElementById("thumbnailURL").value;
  436.   } else {
  437.     targetURL = document.getElementById("url").value;
  438.   }
  439.   
  440.   openDialog("chrome://speeddial/content/cropSelector.xul", "",
  441.              "centerscreen,chrome,dialog,resizable,modal",
  442.              targetURL,
  443.              cropSelected,
  444.              document.getElementById("leftOffset").value,
  445.              document.getElementById("topOffset").value,
  446.              document.getElementById("cropWidth").value,
  447.              document.getElementById("cropHeight").value,
  448.              document.getElementById("cropScaling").value,
  449.              document.getElementById("enableJavaScript").checked
  450.              );
  451. }
  452.  
  453. function colorPickerButtonPressed() {
  454.   var targetURL;
  455.  
  456.   if (document.getElementById("customThumbnailURL").checked) {
  457.     targetURL = document.getElementById("thumbnailURL").value;
  458.   } else {
  459.     targetURL = document.getElementById("url").value;
  460.   }
  461.   
  462.   openDialog("chrome://speeddial/content/colorPicker.xul", "",
  463.              "centerscreen,chrome,dialog,resizable,modal",
  464.              targetURL,
  465.              document.getElementById("backgroundColorText").value,
  466.              document.getElementById("enableJavaScript").checked
  467.              );
  468. }
  469.  
  470. function setCropData(cropX, cropY, cropWidth, cropHeight, cropScaling) {
  471.   cropSelected = true;
  472.   document.getElementById("leftOffset").value = cropX;
  473.   document.getElementById("topOffset").value = cropY;
  474.   document.getElementById("cropWidth").value = cropWidth;
  475.   document.getElementById("cropHeight").value = cropHeight;
  476.   document.getElementById("cropScaling").value = cropScaling;
  477. }
  478.  
  479. function setPickerData(color) {
  480.   document.getElementById("backgroundColor").color = color;
  481.   document.getElementById("backgroundColorText").value = color;
  482. }
  483.  
  484. function showEditWeatherDial() {
  485.   window.opener.openDialog("chrome://speeddial/content/editWeatherDial.xul", "",
  486.              "centerscreen,chrome,dialog,resizable,dependent",
  487.              targetDial);
  488.   window.close();
  489. }
  490.  
  491. function showEditLaunchDial() {
  492.   window.opener.openDialog("chrome://speeddial/content/editLaunchDial.xul", "",
  493.              "centerscreen,chrome,dialog,resizable,dependent",
  494.              targetDial);
  495.   window.close();
  496. }
  497.  
  498. function showEditGroupDial() {
  499.   window.opener.openDialog("chrome://speeddial/content/editGroupDial.xul", "",
  500.                "centerscreen,chrome,dialog,resizable,dependent",
  501.                targetDial);
  502.   window.close();
  503. }
  504.  
  505. function showEditPluginDial() {
  506.   window.opener.openDialog("chrome://speeddial/content/editPluginDial.xul", "",
  507.                "centerscreen,chrome,dialog,resizable,dependent",
  508.                targetDial);
  509.   window.close();
  510. }